package test;

/**
 * @Author Stringzhua
 * @Date 2024/11/8 20:41
 * description:
 */
public class test03 {
    public static void main(String[] args) {
        String s = "abbcbba";
        System.out.println(check(s));
    }

    public static String check(String s) {
        // 判空，如果字符串为空或长度为0，返回一个空格字符串（这里可能更合理的是返回空字符串""，可根据需求调整）
        if (s.length() == 0 || s.isEmpty()) {
            return " ";
        }

        // 字符串长度
        int len = s.length();
        // 字符数组
        char[] chars = s.toCharArray();
        int maxlength = 0; // 最长回文子串的长度，初始化为0
        // 记录回文串在原串的起始位置，初始化为0
        int index = 0;

        // 确定回文串起始位置，这里原代码的问题是没有定义n，应该改为len
        for (int i = 0; i < len; i++) {
            // 确定结束位置
            for (int j = i; j < len; j++) {
                boolean flag = true;
                int longs = j - i + 1;
                // 判断是不是回文串
                for (int k = 0; k < longs / 2; k++) {
                    if (chars[i + k]!= chars[j - k]) {
                        // 如果字符不相等，说明不是回文串
                        flag = false;
                        break;
                    }
                }
                // 如果是回文串且长度大于当前记录的最长长度
                if (flag && longs > maxlength) {
                    maxlength = longs;
                    index = i;
                }
            }
        }

        // 根据找到的最长回文子串的起始位置和长度，从原字符串中截取并返回最长回文子串
        return s.substring(index, index + maxlength);
    }
}
